#Что произойдет с циклом событий в примере, когда в main() не останется невыполненных инструкций?
# import asyncio
# import time


# async def coro(num):
#     start = time.time()
#     print(f"Задача {num}: Начало работы")
#     await asyncio.sleep(2.5 - num)
#     print(f"Задача {num}: Завершение работы")
#     return f"Задача {num} работала {time.time()-start:.3f} секунды"


# async def main():
#     # Создание списка задач для асинхронного выполнения с разными аргументами
#     tasks = [asyncio.create_task(coro(i)) for i in [1, 2]]

#     # Запуск всех задач в цикле событий и ожидание их выполнения
#     result = await asyncio.gather(*tasks)
#     print(*result, sep='\n')


# asyncio.run(main())

#Цикл событий автоматически завершит свою работу.
##################################################
#Что делает await asyncio.sleep(3) в данном контексте?
# import asyncio

# async def perform_task():
#     print("Ожидание внешнего события")
#     await asyncio.sleep(3)
#     return "Событие обработано"

# async def main():
#     result = await perform_task()
#     print(result)

# asyncio.run(main())
#Приостанавливает выполнение perform_task на 3 секунды, позволяя циклу событий обрабатывать другие задачи.
#################################################
# import asyncio
# import time


# async def fetch_data():
#     print("Получение данных #1 ...")
#     await asyncio.sleep(2)
#     print("Данные #1 получены.")
#     data = {'key1': 1, 'key2': 2, 'key3': 3, 'key4': 3}
#     return data


# def process_data(data: dict):
#     result = sum(x for x in data.values())
#     print(f"Данные обработаны: {result}")


# async def main():
#     task = asyncio.create_task(fetch_data())
#     print("Запрос данных...")
#     data = await task

#     process_data(data)


# asyncio.run(main())
#Только получение данных.
#Что делает следующий код?
import asyncio

async def async_func():

    def sync_func():
        return 42

    result = sync_func()
    print(result)

asyncio.run(async_func())
#Выполняет синхронную функцию sync_func() внутри асинхронной функции async_func и выводит результат 42